package com.lemon.blog.web.mapper;

import com.lemon.blog.web.domain.BlBlog;
import com.lemon.common.core.base.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 包名称：com.lemon.blog.web.mapper
 * 类名称：BlBlogMapper
 * 类描述：博客管理Mapper接口
 * 创建人：@author huangpeng
 * 创建时间：2022年04月10日 00:03
 */
public interface BlBlogMapper extends BaseMapper<BlBlog> {

    /**
     * 查询博客管理列表
     * @Title: selectBlBlogList
     * @Description: 查询博客管理列表
     * @param blBlog
     * @return: List<BlBlog>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/2/26 18:23
     */
    public List<BlBlog> selectBlBlogList(BlBlog blBlog);

    /**
     * 查询文章数量
     * @Title: selectBlogCount
     * @Description: 查询文章数量
     * @param
     * @return: int
     * @throws:
     * @author: huangpeng
     * @Date: 2022/9/16 22:46
     */
    int selectBlogCount();

    /**
     * 获取博客贡献数量
     * @Title: queryBlogContributeCount
     * @Description: 获取博客贡献数量
     * @param startTime
     * @param endTime
     * @return: List<Map<String,Object>>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/1/8 18:13
     */
    List<Map<String, Object>> queryBlogContributeCount(@Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 获取推荐的文章列表
     * @Title: queryRecommendList
     * @Description: 获取推荐的文章列表
     * @param
     * @return: List<BlBlog>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/8/1 16:53
     */
    List<BlBlog> queryRecommendList();

    /**
     * 根据主键查询数据库记录
     * @Title: selectByPrimaryKey
     * @Description: 根据主键查询数据库记录
     * @param id 主键
     * @return: T
     * @throws:
     * @author: huangpeng
     * @Date: 2023/1/7 11:53
     */
    BlBlog selectByPrimaryKeyAndCurrUserId(@Param("id") Long id, @Param("currUserId") Long currUserId);

    /**
     * 通过用户id查询博客数量
     * @Title: selectBlogCountByUserId
     * @Description: 通过用户id查询博客数量
     * @param userId 用户id
     * @param currUserId 当前登录用户id
     * @return: int
     * @throws:
     * @author: huangpeng
     * @Date: 2023/8/23 13:10
     */
    int selectBlogCountByUserId(@Param("userId") Long userId, @Param("currUserId") Long currUserId);

    /**
     * 获取被点赞、被点踩、被收藏的文章数量
     * @Title: selectHasOptionsCountByUserId
     * @Description: 获取被点赞、被点踩、被收藏的文章数量
     * @param userId 用户id
     * @return: Map<String, Object>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/8/23 16:36
     */
    Map<String, Object> selectHasOptionsCountByUserId(@Param("userId") Long userId);

    /**
     * 获取时间数据
     * @Title: queryTimeList
     * @Description: 获取时间数据
     * @return: List<Map<String, Object>>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/9/3 20:29
     */
    List<Map<String, Object>> queryTimeList();

    /**
     * 根据文章id列表查询博客列表
     * @Title: selectByPrimaryKeyList
     * @Description: 根据文章id列表查询博客列表
     * @param blogIdList 文章id列表
     * @return: List<BlBlog>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/12/11 17:14
     */
    List<BlBlog> selectByPrimaryKeyList(List<Long> blogIdList);
}
